package com.zx.crowdfunding.mapper;

import com.zx.crowdfunding.entity.Role;
import com.zx.crowdfunding.entity.RoleExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public interface RoleMapper {
    int countByExample(RoleExample example);

    int deleteByExample(RoleExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Role record);

    int insertSelective(Role record);

    List<Role> selectByExample(RoleExample example);

    Role selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Role record, @Param("example") RoleExample example);

    int updateByExample(@Param("record") Role record, @Param("example") RoleExample example);

    int updateByPrimaryKeySelective(Role record);

    int updateByPrimaryKey(Role record);
    
    /**
     * 根据关键字模糊查询
     * @param keyword 关键字
     * @return 角色对象列表
     */
    List<Role> selectByKeyword(String keyword);

	/**
	 * 查询已分配的角色
	 * @param adminId 管理员id
	 * @return Role对象的List集合
	 */
	List<Role> selectAssignedRole(Integer adminId);

	/**
	 * 查询未分配的角色
	 * @param adminId 管理员id
	 * @return Role对象的List集合
	 */
	List<Role> selectUnAssignedRole(Integer adminId);

	/**
	 * 根据角色id删除角色与权限的关联关系数据
	 * @param roleId 角色id
	 */
	void deleteRoleAuthRelationship(Integer roleId);

	/**
	 * 添加角色与权限的关联关系数据
	 * @param roleId 角色id
	 * @param authIdList 权限id的List集合
	 */
	void insertRoleAuthRelationship(@Param("roleId") Integer roleId, @Param("authIdList") List<Integer> authIdList);
}